home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-10-01 | 10.8 KB | 499 lines | [TEXT/PvRy] |
- // Persistence Of Vision raytracer version 2.0 sample file.
-
- // piece I:
- // by Truman Brown 11/91
- // Close-up of a museum piece in the Woild Museum
-
- // The lighting is intentionally dim when the image is rendered.
- // You can enhance the image using PicLab's gamma, brightness, and
- // contrast command when you post-process the image.
-
- #include "colors.inc"
- #include "textures.inc"
- #include "shapes.inc"
-
- camera {
- location <-36.0, 29.0, -70.0>
- direction < 0.0, 0.0, 2.0 >
- up < 0.2, 0.8, 0.0 >
- right < 4/3, 0.0, 0.0 >
- look_at < 0.0, -8.0, 0.0 >
- }
-
- // ----------------------------------------------------------------------------
- // lights
- // ----------------------------------------------------------------------------
- #declare Light1c = color red 0.1 green 0.1 blue 0.1
- #declare Light2c = color red 0.2 green 0.2 blue 0.2
- #declare Light3c = color red 0.3 green 0.3 blue 0.3
- #declare Light4c = color red 0.4 green 0.4 blue 0.4
- #declare Light5c = color red 0.5 green 0.5 blue 0.5
-
- #declare light1 = light_source { <0.0, 0.0, 0.0> color Light1c }
- #declare light2 = light_source { <0.0, 0.0, 0.0> color Light2c }
- #declare light3 = light_source { <0.0, 0.0, 0.0> color Light3c }
- #declare light4 = light_source { <0.0, 0.0, 0.0> color Light4c }
- #declare light5 = light_source { <0.0, 0.0, 0.0> color Light5c }
-
- union {
- object { light1 translate < 35, 30, -16> }
- object { light3 translate < -25, 40, 20> }
- object { light2 translate < -48, 30, -20> }
- object { light5 translate < 20, -10, -22> }
- pigment { White }
- }
-
- // ----------------------------------------------------------------------------
- // textures
- // ----------------------------------------------------------------------------
- #declare rod_texture1 =
- texture {
- pigment { Firebrick }
- finish {
- specular 0.9
- roughness 0.001
- ambient 0.0
- diffuse 0.5
- reflection 0.25
- }
- }
-
- #declare loop_texture =
- texture {
- pigment { Black }
- finish {
- ambient 0.01
- diffuse 0.45
- specular 1.00
- roughness 0.001
- reflection 0.4
- }
- }
-
- #declare innertube_texture =
- texture {
- pigment { SteelBlue }
- finish {
- ambient 0.05
- diffuse 0.1
- specular 1.00
- roughness 0.001
- reflection 0.90
- }
- }
-
- #declare balls_texture =
- texture {
- pigment { White }
- finish {
- ambient 0.01
- diffuse 0.3
- specular 1.00
- roughness 0.001
- reflection 0.85
- }
- }
-
- #declare tile1_texture =
- texture {
- pigment {
- wood
- turbulence 0.5
- color_map {
- [0.0 0.7 color red 0.93 green 0.710 blue 0.532
- color red 0.98 green 0.810 blue 0.600]
- [0.7 1.01 color red 0.60 green 0.333 blue 0.266
- color red 0.70 green 0.600 blue 0.23]
- }
- rotate 90*y
- scale 5
- }
- finish {
- crand 0.05
- specular 1.0
- roughness 0.001
- ambient 0.05
- diffuse 0.35
- reflection 0.15
- }
- }
-
- #declare tile2_texture =
- texture {
- pigment {
- wood
- turbulence 0.6
- color_map {
- [0.0 0.8 color red 0.42857 green 0.23810 blue 0.04762
- color red 0.42857 green 0.23810 blue 0.04762]
- [0.8 1.01 color red 0.4 green 0.333 blue 0.066
- color red 0.2 green 0.033 blue 0.033]
- }
- scale 7
- }
- finish {
- crand 0.05
- specular 1.0
- roughness 0.001
- ambient 0.01
- diffuse 0.75
- reflection 0.15
- }
- }
-
- #declare frame_texture =
- texture {
- Bronze_Texture
- finish {
- specular 1.0
- roughness 0.001
- ambient 0.11
- diffuse 0.8
- reflection 0.85
- }
- }
-
- // ----------------------------------------------------------------------------
- // torus primatives
- // ----------------------------------------------------------------------------
- #declare torus1 =
- quartic { <
- 1.0, 0.0, 0.0, 0.0, 2.0, /* major radius: 5.0 */
- 0.0, 0.0, 2.0, 0.0, -50.5, /* minor radius: 0.5 */
- 0.0, 0.0, 0.0, 0.0, 0.0, /* outer radius: 5.5 */
- 0.0, 0.0, 0.0, 0.0, 0.0, /* inner radius: 4.5 */
- 1.0, 0.0, 0.0, 2.0, 0.0,
- 49.5, 0.0, 0.0, 0.0, 0.0,
- 1.0, 0.0, -50.50, 0.0, 612.5625 >
- }
-
- #declare torus2=
- quartic { <
- 1.0, 0.0, 0.0, 0.0, 2.0, /* major radius: 0.8 */
- 0.0, 0.0, 2.0, 0.0, -1.36, /* minor radius: 0.2 */
- 0.0, 0.0, 0.0, 0.0, 0.0, /* outer radius: 1.0 */
- 0.0, 0.0, 0.0, 0.0, 0.0, /* inner radius: 0.6 */
- 1.0, 0.0, 0.0, 2.0, 0.0,
- 1.2, 0.0, 0.0, 0.0, 0.0,
- 1.0, 0.0, -1.36, 0.0, 0.36 >
- }
-
- #declare torus3 =
- quartic { <
- 1.0, 0.0, 0.0, 0.0, 2.0, /* major radius: 12.0 */
- 0.0, 0.0, 2.0, 0.0, -296.0, /* minor radius: 2.0 */
- 0.0, 0.0, 0.0, 0.0, 0.0, /* outer radius: 14.0 */
- 0.0, 0.0, 0.0, 0.0, 0.0, /* inner radius: 10.0 */
- 1.0, 0.0, 0.0, 2.0, 0.0,
- 280.0, 0.0, 0.0, 0.0, 0.0,
- 1.0, 0.0, -296.0, 0.0, 19600.0 >
- }
-
- #declare torus4 =
- quartic { <
- 1.0, 0.0, 0.0, 0.0, 2.0, /* major radius: 7.0 */
- 0.0, 0.0, 2.0, 0.0, -98.5, /* minor radius: 0.5 */
- 0.0, 0.0, 0.0, 0.0, 0.0, /* outer radius: 7.5 */
- 0.0, 0.0, 0.0, 0.0, 0.0, /* inner radius: 6.5 */
- 1.0, 0.0, 0.0, 2.0, 0.0,
- 97.5, 0.0, 0.0, 0.0, 0.0,
- 1.0, 0.0, -98.5, 0.0, 2376.5625 >
- }
-
- // ----------------------------------------------------------------------------
- // piece definitions
- // ----------------------------------------------------------------------------
- #declare halfring =
- object {
- torus1
- rotate 90*x
- clipped_by {
- plane { -y, 0 }
- }
- texture { rod_texture1 }
- bounded_by {
- sphere { <0, 0, 0>, 5.51 }
- }
- translate -12*x
- }
-
- #declare halfring_array =
- union {
- object { halfring rotate -10*y }
- object { halfring rotate -40*y }
- object { halfring rotate -100*y }
- object { halfring rotate -130*y }
- object { halfring rotate -190*y }
- object { halfring rotate -220*y }
- object { halfring rotate -280*y }
- object { halfring rotate -310*y }
-
- bounded_by {
- sphere { <0, 0, 0>, 17.51 }
- }
- }
-
- #declare quarterring =
- object {
- torus1
- rotate 90*x
- clipped_by {
- plane { y, 0 }
- plane { x, 0 }
- }
- texture {
- rod_texture1
- }
- bounded_by {
- sphere { <-2.75, -2.75, 0>, 3.9 }
- }
- translate <-12, 0, 0>
- }
-
- #declare quarterring_array =
- union {
- object { quarterring rotate -10*y }
- object { quarterring rotate -40*y }
- object { quarterring rotate -100*y }
- object { quarterring rotate -130*y }
- object { quarterring rotate -190*y }
- object { quarterring rotate -220*y }
- object { quarterring rotate -280*y }
- object { quarterring rotate -310*y }
- bounded_by {
- sphere { <0, 0, 0>, 17.51 }
- }
- }
-
- #declare ringball =
- sphere {
- <0, -5.0, 0>, 1.0
- texture {
- rod_texture1
- }
- translate <-12, 0, 0>
- }
-
- #declare ringball_array =
- union {
- object { ringball rotate -10*y }
- object { ringball rotate -40*y }
- object { ringball rotate -100*y }
- object { ringball rotate -130*y }
- object { ringball rotate -190*y }
- object { ringball rotate -220*y }
- object { ringball rotate -280*y }
- object { ringball rotate -310*y }
- bounded_by {
- sphere { <0, 0, 0>, 13.5 }
- }
- }
-
- #declare pole =
- object {
- Disk_Y
- rotate 180*x
- scale <0.5, 20, 0.5>
- translate <5, 0, 0>
-
- texture {
- rod_texture1
- }
- translate <-12, 0, 0>
- }
-
- #declare pole_array =
- union {
- object { pole rotate -10*y }
- object { pole rotate -40*y }
- object { pole rotate -100*y }
- object { pole rotate -130*y }
- object { pole rotate -190*y }
- object { pole rotate -220*y }
- object { pole rotate -280*y }
- object { pole rotate -310*y }
- bounded_by {
- sphere { <0, -10, 0>, 13.5 }
- }
- }
-
- #declare blueloop =
- object {
- torus2
- rotate 90*z
- texture {
- loop_texture
- }
- bounded_by {
- sphere { <0, 0, 0>, 1.1 }
- }
- }
-
- #declare blueloop_set =
- union {
- object { blueloop translate 5*y rotate 0*z }
- object { blueloop translate 5*y rotate +90*z }
- object { blueloop translate 5*y rotate -90*z }
- bounded_by {
- sphere { <0, 0, 0>, 6.51 }
- }
- translate -12*x
- }
-
- #declare blueloop_array =
- union {
- object { blueloop_set rotate -10*y }
- object { blueloop_set rotate -40*y }
- object { blueloop_set rotate -100*y }
- object { blueloop_set rotate -130*y }
- object { blueloop_set rotate -190*y }
- object { blueloop_set rotate -220*y }
- object { blueloop_set rotate -280*y }
- object { blueloop_set rotate -310*y }
- bounded_by {
- sphere { <0, 0, 0>, 18.51 }
- }
- }
-
- #declare basering =
- object {
- torus4
- texture {
- rod_texture1
- }
- bounded_by {
- sphere { <0, 0, 0>, 7.6 }
- }
- translate <0, -20.5, 0>
- }
-
- #declare innertube =
- object {
- torus3
- texture {
- innertube_texture
- }
- bounded_by {
- sphere { <0, 0, 0>, 14.1 }
- }
- }
-
- #declare structurebase =
- union {
- object { halfring_array }
- object { quarterring_array }
- object { ringball_array }
- object { blueloop_array }
- object { pole_array }
- object { basering }
- object { innertube }
- bounded_by {
- sphere { <0, 0, 0>, 22 }
- }
- }
-
- #declare balls =
- sphere {
- <0, 0, 0>, 4.0
- texture {
- balls_texture
- }
- }
-
- #declare block1 =
- intersection {
- object {
- Cube
- scale <10, 1, 10>
- }
- object {
- Cylinder_Y
- scale <6, 1, 6>
- inverse
- }
-
- texture {
- tile1_texture
- }
- bounded_by {
- sphere { <0, 0, 0>, 15 }
- }
- }
-
- #declare block2 =
- intersection {
- object {
- Cube
- scale <10, 1, 10>
- }
- object {
- Cylinder_Y
- scale <6, 1 ,6>
- inverse
- }
-
- texture {
- tile2_texture
- }
- bounded_by {
- sphere { <0, 0, 0>, 15 }
- }
- }
-
- #declare frame =
- object {
- Cube
- scale <21, 1.5, 21>
-
- clipped_by {
- object {
- Cube
- scale <20, 2, 20>
- inverse
- }
- }
- texture { frame_texture }
- }
-
- #declare bigtile =
- union {
- object { block1 translate < 10, -1, 10> }
- object { block1 translate <-10, -1, -10> }
- object { block2 translate <-10, -1, 10> }
- object { block2 translate < 10, -1, -10> }
- object { frame }
-
- bounded_by { box { <-21.1, -2.6, -21.1>, <21.1, 0.6, 21.1> } }
- }
-
- #declare floor =
- object { bigtile }
-
- // color debugger
- // object { Cylinder_Y scale <3, 1, 3> texture { rod_texture1 } }
- // object { Cylinder_X scale <1, 3, 3> texture { rod_texture1 } }
-
- //-----------------------------------------------------------------------------
- // Put it all together and render it
- //-----------------------------------------------------------------------------
- object { structurebase }
-
- union {
- object { balls translate <0, 0, 0> }
- object { balls translate <0, -8, 0> }
- object { balls translate <0, -16, 0> }
-
- bounded_by {
- object {
- Cylinder_Y
- scale <4.1, 1, 4.1>
- }
- }
- }
-
- object {
- floor
- rotate 45*y
- translate -20*y
- }
-